Принцип відкритості/закритості (OCP)
📌 Що таке OCP?
Принцип відкритості/закритості (Open/Closed Principle) говорить про те, що клас повинен бути відкритий для розширення, але закритий для змін. Це означає, що ми можемо додавати новий функціонал без зміни існуючого коду.
🛠 Приклад порушення OCP
У цьому класі, якщо потрібно додати новий тип знижки, доведеться змінювати код класу:
public class DiscountService {
public double applyDiscount(String type, double price) {
if (type.equals("NEWYEAR")) {
return price * 0.9;
} else if (type.equals("BLACKFRIDAY")) {
return price * 0.8;
}
return price;
}
}
✅ Виправлення OCP
Використовуємо **інтерфейс** та **стратегію**, щоб додавати нові типи знижок без зміни коду класу.
public interface DiscountStrategy {
double applyDiscount(double price);
}
public class NewYearDiscount implements DiscountStrategy {
public double applyDiscount(double price) {
return price * 0.9;
}
}
public class BlackFridayDiscount implements DiscountStrategy {
public double applyDiscount(double price) {
return price * 0.8;
}
}
public class DiscountService {
public double applyDiscount(DiscountStrategy strategy, double price) {
return strategy.applyDiscount(price);
}
}
Назад Далі